﻿#define _CRT_SECURE_NO_WARNINGS 1
//#include<stdio.h>
//#include<string.h>
//void left_move(char* arr, int k)
//{
//	while(k--)
//	{
//		int len = strlen(arr);
//		char tmp = *(arr + len - 1);
//		char* p = arr;
//		while (len--)
//		{
//			*(p + len) = *(p + len - 1);
//		}
//		*p = tmp;
//	}
//}
//int main()
//{
//	char arr[] = "abcdef";
//	int k = 0;
//	scanf("%d", &k);
//	left_move(arr, k);
//	printf("%s\n", arr);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a;
//	double d;
//	FILE* pf = fopen("data.txt","r");
//	if (!pf)
//	{
//		perror("fopen");
//		return 1;
//	}
//	读文件  - 输入
//	int fscanf ( FILE * stream, const char * format, ... );
//	fscanf(pf, "%d %lf", &a, &d);
//	关闭文件
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

//#include<stdio.h>
//struct S
//{
//	int a;
//	double d;
//};
//int main()
//{
//	struct S s = { 520,13.14 };
//	FILE* pf = fopen("data.txt", "wb");//二进制打开文件
//	if (!pf)
//	{
//		perror("fopen");
//		return 1;
//	}
//	//写文件 - 输出
//	//size_t fwrite(const void* ptr, size_t size, size_t count, FILE * stream);
//	fwrite(&s, sizeof(struct S), 1, pf);
//
//	//关闭文件
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}


//#include<stdio.h>
//struct S
//{
//	int a;
//	double d;
//};
////int main()
////{
//	struct S s = { 0 };
//	FILE* pf = fopen("data.txt", "rb");//二进制读出文件
//	if (!pf)
//	{
//		perror("fopen");
//		return 1;
//	}
//	//读文件 - 输入
//	//size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );
//	fread(&s, sizeof(struct S), 1, pf);
//	printf("%d %lf", s.a, s.d);
//	//关闭文件
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

//#include<stdio.h>
//struct S
//{
//	int a;
//	double d;
//	char arr[10];
//};
//int main()
//{
//	struct S s = { 12,3.14,"hello" };
//	char str[100];
//	struct S temp = { 0 };
//	//int sprintf ( char * str, const char * format, ... );
//	sprintf(str, "%d %lf %s", s.a, s.d, s.arr);
//	printf(str);
//
//	//int sscanf ( const char * s, const char * format, ...);
//	sscanf(str, "%d %lf %s", &(temp.a), &(temp.d), &(temp.arr));
//	printf("%d %lf %s\n", temp.a, temp.d, temp.arr);
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	FILE* pFile;
//	pFile = fopen("example.txt", "wb");
//	fputs("This is an apple.", pFile);///写文件 - 输出
//	fseek(pFile, 9, SEEK_SET);//从起始位置开始偏移
//	//fseek(pFile, -8, SEEK_END);//从起始位置开始偏移
//	//偏移量为9的字符串换为 sam
//	fputs(" sam", pFile);///写文件 - 输出
//	fclose(pFile);
//	pFile = NULL;
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//    FILE* pFile;
//    long size;
//    pFile = fopen("example.txt", "rb");
//    if (pFile == NULL) 
//        perror("Error opening file");
//    else
//    {
//        fseek(pFile, 0, SEEK_END);   //文件末尾 
//        size = ftell(pFile);
//        fclose(pFile);
//        pFile = NULL;
//        printf("Size of example.txt: %ld bytes.\n", size);
//    }
//    return 0;
//}

//#include <stdio.h>
//int main()
//{
//    int n;
//    FILE* pFile;
//    char buffer[27];
//    pFile = fopen("myfile.txt", "w+");
//    for (n = 'A'; n <= 'Z'; n++)
//        fputc(n, pFile);//输出 - 写文件
//    rewind(pFile);//回到起始位置
//    fread(buffer, 1, 26, pFile);//输入 - 读文件
//    fclose(pFile);
//    pFile = NULL;
//    buffer[26] = '\0';
//    puts(buffer);
//    return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int a = 10000;
//	FILE* pf = fopen("test.txt", "wb");
//	fwrite(&a, 4, 1, pf);//二进制的形式写到文件中 - 输出
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

//#include <stdio.h>
//#include <stdlib.h>
//int main(void)
//{
//    int c; // 注意：int，非char，要求处理EOF
//    FILE* fp = fopen("test.txt", "r");
//    if (!fp) {
//        perror("File opening failed");
//        return EXIT_FAILURE;
//    }
//    //fgetc 当读取失败的时候或者遇到文件结束的时候，都会返回EOF
//    while ((c = fgetc(fp)) != EOF) // 标准C I/O读取文件循环
//    {
//        putchar(c);
//    }
//    //判断是什么原因结束的
//    if (ferror(fp))
//        puts("I/O error when reading");//读取失败
//    else if (feof(fp))
//        puts("End of file reached successfully");//文件结束
//    fclose(fp);
//    fp = NULL;
//    return 0;
//}

//#include <stdio.h>
//enum
//{
//    SIZE = 5
//};
//int main(void)
//{
//    double a[SIZE] = { 1,2,3,4,5 };
//    FILE* fp = fopen("test.bin", "wb"); // 必须用二进制模式
//    fwrite(a, sizeof * a, SIZE, fp); // 写 double 的数组
//    fclose(fp);
//    double b[SIZE];
//    fp = fopen("test.bin", "rb");
//    size_t ret_code = fread(b, sizeof * b, SIZE, fp); // 读 double 的数组
//    if (ret_code == SIZE) {
//        puts("Array read successfully, contents: ");
//        for (int n = 0; n < SIZE; ++n) 
//            printf("%f ", b[n]);
//        putchar('\n');
//    }
//    else { // error handling
//        if (feof(fp))
//            printf("Error reading test.bin: unexpected end of file\n");
//        else if (ferror(fp)) {
//            perror("Error reading test.bin");
//        }
//    }
//    fclose(fp);
//    fp = NULL;
//    return 0;
//}